/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.tp.sistemainventario.dao;

import java.sql.*;
import edu.ucsur.tp.sistemainventario.beans.Producto;
import edu.ucsur.tp.sistemainventario.utils.Conexion;
import java.util.*;
/**
 *
 * @author luis.hidalgo
 */
public class MySqlProductoDAO implements ProductoDAO{
    
  public void insertarProducto(Producto producto) {
    String sql = "INSERT INTO producto ( codigo, nombre, grupo, marca, modelo, tipo_unidad, ubicacion, comentario ) ";
    sql += " VALUES ( ?, ?, ?, ?, ?, ?, ?,? ) ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, producto.getCodigo());
      pstmt.setString(2, producto.getNombre());
      pstmt.setString(3, producto.getGrupo());
      pstmt.setString(4, producto.getMarca());
      pstmt.setString(5, producto.getModelo());
      pstmt.setString(6, producto.getTipo_unidad());
      pstmt.setString(7, producto.getUbicacion());
      pstmt.setString(8, producto.getComentario());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void actualizarProducto (Producto producto){
      String sql = "UPDATE producto SET codigo = ?, nombre = ?, grupo = ?, marca = ?, modelo = ?, tipo_unidad = ?, ubicacion = ?, comentario = ? WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, producto.getCodigo());
      pstmt.setString(2, producto.getNombre());
      pstmt.setString(3, producto.getGrupo());
      pstmt.setString(4, producto.getMarca());
      pstmt.setString(5, producto.getModelo());
      pstmt.setString(6, producto.getTipo_unidad());
      pstmt.setString(7, producto.getUbicacion());
      pstmt.setString(8, producto.getComentario());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void eliminarProducto(int codigo) {
    String sql = "DELETE FROM producto WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, codigo);
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public List<Producto> getListaProductoPorNombre(String filtroNombre) {
    List<Producto> listaProducto = new ArrayList<Producto>();
    String sql = "SELECT * FROM producto WHERE nombres like ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "%" + filtroNombre + "%");
      ResultSet rs = pstmt.executeQuery();
      while (rs.next()) {
        Producto producto = new Producto();
        producto.setCodigo(rs.getString("codigo"));
        producto.setNombre(rs.getString("nombre"));
        producto.setGrupo(rs.getString("grupo"));
        producto.setMarca(rs.getString("marca"));
        producto.setModelo(rs.getString("modelo"));
        producto.setTipo_unidad(rs.getString("tipo_unidad"));
        producto.setUbicacion(rs.getString("ubicacion"));
        producto.setComentario(rs.getString("comentario"));
        listaProducto.add(producto);
      }
      rs.close();
      pstmt.close();
      conn.close();
      return listaProducto;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
  
  public Producto getProducto(int codigo) {
    String sql = "SELECT * FROM producto WHERE codigo = ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1,codigo);
      ResultSet rs = pstmt.executeQuery();
      
      if (rs.next()) {
        Producto producto = new Producto(); 
        producto.setCodigo(rs.getString("codigo"));
        producto.setNombre(rs.getString("nombre"));
        producto.setGrupo(rs.getString("grupo"));
        producto.setMarca(rs.getString("marca"));
        producto.setModelo(rs.getString("modelo"));
        producto.setTipo_unidad(rs.getString("tipo_unidad"));
        producto.setUbicacion(rs.getString("ubicacion"));
        producto.setComentario(rs.getString("comentario"));
        return producto;
      }
      rs.close();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
}
